package mapper;

import com.lagou.entity.UserCourseOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户课程订单表(UserCourseOrder)表数据库访问层
 *
 * @author Gilbert
 * @since 2021-06-28 02:41:11
 */
public interface OrderDao {

    /**
     * 生成订单
     *
     * @param orderNo          订单编号
     * @param userId           用户编号
     * @param courseId         课程编号
     * @param activityCourseId 活动课程编号
     * @param sourceType       订单来源类型
     */
    void saveOrder(@Param("orderNo") String orderNo, @Param("userId") String userId, @Param("courseId") String courseId,
                   @Param("activityCourseId") String activityCourseId, @Param("sourceType") String sourceType);

    /**
     * 修改订单
     *
     * @param orderNo 订单编号
     * @param status  订单状态 0已创建 10未支付 20已支付 30已取消 40已过期
     * @return 受影响的行数
     */
    Integer updateOrder(@Param("orderNo") String orderNo, @Param("status") int status);

    /**
     * 删除订单
     *
     * @param orderNo 订单编号
     * @return 受影响行数
     */
    Integer deleteOrder(String orderNo);

    /**
     * 查询用户所有订单
     *
     * @param userId 用户编号
     * @return 订单对象列表
     */
    List<UserCourseOrder> getOrdersByUserId(@Param("userId") String userId);
}

